javascript oop、instanceof 和基类
全部标签 我已经为单元测试编写了这段代码:assertInstanceOf($Collection,Collection::class);}}当我运行它时,我得到了这个错误:PHPUnit5.4.6bySebastianBergmannandcontributors.Runtime:PHP7.0.6-6+donate.sury.org~trusty+1Configuration:/var/www/project/phpunit.xmlE1/1(100%)Time:33ms,Memory:2.00MBTherewas1error:1)tests\CollectionTest::testIsColl
所以我正在使用一个设置类,它扩展了一个类似于“全局设置”的基本设置类。有几个服务,每个服务都有自己的设置类,它扩展了抽象的基本设置类。抽象基本设置类对应于服务之间共享的设置。所以首先我会用下面的例子来说明,然后我会定义问题:例子:abstractclassBaseSettings{protected$settingA;protected$settingB;}classMyServiceSettingsextendsBaseSettings{private$settingC;public$settingD;}问题:如果我像这样创建一个ReflectionClass实例..$reflect
如果我有一个扩展类Bar的类Foo和一个Bar实例,是否可以使用该Bar实例来“填充”一个新的Foo实例?基本上,我只能检索Bar,但我想在我的代码中使用Foo,因为它为我提供了很多额外的方法。我看到很多类似问题的解决方案,但它们似乎都是python或c#。我无法使用ReflectionClass::newInstanceArgs,因为我无法访问首先进入Bar的构造函数以创建它的数据。 最佳答案 完成此操作的推荐方法是通过dependencyinjection.Foo的构造函数可以接受Bar的实例,然后您必须编写代码来加载新的Foo
在php中,有什么方法可以直接通过派生类类型的对象直接访问任何基类属性。例如:classa{public$name="Something";functionshow(){echo$this->name;}};classbextendsa{public$name="SomethingElse";functionshow(){echo$this->name;}};$obj=newb();$obj->show();它会打印字符串“SomethingElse”,但是如果我想访问基类函数显示怎么办,它似乎不像在C++中那样工作obj.a::show(); 最佳答案
这个问题在这里已经有了答案:Newselfvs.newstatic(3个答案)关闭6年前。我有一个类作为基类。然后我有几个继承自它的其他类。我想使用静态语法开始加载继承的类,但这种行为没有多大意义。直到现在,我都是这样加载类的,它完成了工作。$obj=newfoo();$something=$obj->ByID(1);我希望能够像这样调用ByID函数。$something=foo::Get()->ByID(1);上面的代码是有效的,但它不是调用继承类,而是加载基类。我想我明白为什么会这样,但这没有任何意义。在.NET中,“this”将始终应用于继承的对象,但在我这里它不是这样工作的。我
我可能在这里遗漏了一些明显的东西,因为这是其他OOP语言中的基本功能,但我正在努力使用PHP方法来执行此操作。我知道PHP不是“真正的”OOP语言,但仍然...我要做的是将实例化为派生类的对象转换为基类。类似的东西:classSome{}classSomeMockextendsSome{}functionGetSomeMock(){$mock=newSomeMock();return(Some)$mock;//Syntaxerrorhere}我发现了一些关于将基类的对象向下转换为派生的奇怪请求的问题,这可以通过一些讨厌的调整来实现,但这个基本功能并不一定那么困难。我在这里缺少什么?编辑
在PHP中有两个类:classparentTroll{...}和classtrollextendsparentTroll{...}然后有一个对象$troll=newtroll();如何检查$trollinstanceofparentTroll?该行现在返回false。 最佳答案 以下示例返回true:classparentTroll{}classtrollextendsparentTroll{}$troll=newtroll();var_dump($trollinstanceofparentTroll);输出:booleantrue
我完全不明白为什么php的instanceof运算符坚持这里的LVALUE不是已定义类的实例,而get_class说它是。classWhereIn{publicfunction__construct($args){echo"isinstanceof:".($args[0]instanceofActiveRecordField).EOL;echo"getclass:".get_class($args[0]).EOL;}}这个方法的输出是:isinstanceof:getclass:ActiveRecordField作为引用,我使用的是PHP5.6.9。 最佳答
我正在开发一个框架,我正在尝试尽可能强烈地键入它。(我在PHP中工作,并从C#中汲取了一些我喜欢的想法,并尝试在此框架内利用它们。)我正在创建一个Collection类,它是域实体/对象的集合。它有点模仿List.Net中的对象。我遇到了阻止我输入此类的障碍。如果我有一个UserCollection,它应该只允许用户对象进入它。如果我有一个PostCollection,它应该只允许Post对象。这个框架中的所有Collections都需要具备一定的基本功能,比如add、remove、iterate。我创建了一个接口(interface),但发现我无法执行以下操作:interfaceIC
我正在处理一个Scala项目,我们想使用XML来通过JAXB(而不是Spring)初始化我们的对象。我有一个层次结构,其中更多的数据成员被添加到子类中。一个简单的例子看起来像这样:classAnimal{stringname}classCatextendsAnimal{intnumLives}classDogextendsAnimal{boolhasSpots}我希望能够从如下所示的XMLblock中初始化动物列表:Garfield9Odiefalse我们如何在类中设置注释才能处理这个问题? 最佳答案 对于此示例,您需要使用@Xml